package com.huitone.gddw.service.system;

import java.util.List;

import com.huitone.gddw.dao.entity.Role;
import com.huitone.gddw.model.support.QueryPage;
import com.huitone.gddw.service.dto.system.RoleDTO;

/**
 * 角色管理 接口
 * @author wuluodan
 *
 */
public interface IRoleService {

	/**
	 * 分页查询
	 * @param page QueryPage
	 * @return QueryPage
	 */
	QueryPage<RoleDTO> selectPage(QueryPage<Role> page);
	
	/**
	 * 获取角色
	 * @return List<Role>
	 */
	List<Role> getAll();
	
	/**
	 * 根据角色ID获取角色信息
	 * @param roleId 角色ID
	 * @return Role
	 */
	Role getById(String roleId);
	
	/**
	 * 根据主键获取修改页面数据
	 * @param roleId 角色ID
	 * @return RoleDTO
	 */
	RoleDTO toUpdate(String roleId);
	
	/**
	 * 改变状态
	 * @param entity Role
	 */
	void changeStatus(Role entity);
	
	/**
	 * 保存
	 * @param roleDTO RoleDTO
	 */
	void save(RoleDTO roleDTO);
	
	/**
	 * 更新
	 * @param roleDTO RoleDTO
	 */
	void update(RoleDTO roleDTO);
	
	/**
	 * 删除
	 * @param roleId 角色ID
	 */
	void delete(String roleId);
	
	/**
	 * 授权角色菜单权限和数据访问权限
	 * @param roleId 角色ID
	 * @param menuIds 多个菜单ID
	 * @param acsFlag 数据访问权限
	 */
	void changeMenusAndAcsFlag(String roleId, String menuIds, String acsFlag);
	
	/**
	 * 根据用户ID查询角色信息
	 * @param userId 用户ID
	 * @return List
	 */
	List<Role> getByUserId(String userId);
	
	/**
	 * 获取最高数据权限
	 * @param userId 用户ID
	 * @return String
	 */
	String getHighestAcsFlag(String userId);
	
	/**
	 * 判断是否拥有访问所有单位权限
	 * @param userId 用户ID
	 * @return boolean
	 */
	boolean isRootAcsFlag(String userId);
	
	Boolean isAdmin(String userId);
	
}
